#include <stdio.h>
#include <string.h>
#include "main.h"

void showSettings(struct settings *edit) {
	char alignment[7];
	char bold[3];
	char italic[3];
	char underline[3];

	switch(edit->align) {
		case ALIGN_LEFT : strcpy(alignment, "lewo"); break;
		case ALIGN_CENTER : strcpy(alignment, "srodek"); break;
		case ALIGN_RIGHT : strcpy(alignment, "prawo"); break;
	}
	switch(edit->bold) {
		case ON : strcpy(bold, "wl"); break;
		case OFF : strcpy(bold, "wy"); break;
	}
	switch(edit->italic) {
		case ON : strcpy(italic, "wl"); break;
		case OFF : strcpy(italic, "wy"); break;
	}
	switch(edit->underline) {
		case ON : strcpy(underline, "wl"); break;
		case OFF : strcpy(underline, "wy"); break;
	}
	printf("TypRozmiar\tWyrownanie\tWytl.\tKurs.\tPodkr.\n");
	printf("%d %d\t\t%s\t\t%s\t%s\t%s\n",
			edit->fontType, edit->fontSize, alignment, bold, italic, underline);
}
void showMenu(void) {
	printf("\nt) zmiana czcionki\t\tr) zmiana rozmiaru\tw) zmiana wyrownania\n");
	printf("b) przelacz wytluszczenie\ti) przelacz kursywe\n");
	printf("u) przelacz podkreslenie\nk) wyjscie\n");
	printf("Wybor: ");
}
void changeFontType(unsigned int *settings) {
	int ft;

	printf("Podaj rodzaj czcionki (0 - 255): ");
	while(scanf("%d", &ft) == 0 || (ft < 0 || ft > 255)) {
		printf("Podaj rodzaj czcionki (0 - 255): ");
		while(getchar() != '\n')
			continue;
	}
	changeSettings(settings, FONTTYPE, ft<<=0);
}
void changeFontSize(unsigned int *settings) {
	int fs;

	printf("Podaj rozmiar czcionki (0 - 127): ");
	while(scanf("%d", &fs) == 0 || (fs < 0 || fs > 127)) {
		printf("Podaj rozmiar czcionki (0 - 127): ");
		while(getchar() != '\n')
			continue;
	}
	changeSettings(settings, FONTSIZE, fs<<=8);
}
void changeAlignment(unsigned int *settings) {
	char al_mode;
	int mode = UNDEF;

	while(mode == UNDEF) {
		while(getchar() != '\n')
			continue;
		printf("Wyrownanie (p - prawo, l - lewo, s - srodek): ");
		scanf("%c", &al_mode);
		switch(al_mode) {
			case 'p' : mode = ALIGN_RIGHT; break;
			case 'l' : mode = ALIGN_LEFT; break;
			case 's' : mode = ALIGN_CENTER; break;
			default : mode = UNDEF;
		}
	}
	changeSettings(settings, ALIGN, mode<<=23);
}
void setBold(unsigned int *settings) {
	int is_on = UNDEF;

	while(is_on == UNDEF) {
		while(getchar() != '\n')
			continue;
		printf("Wytluszczenie (t - tak, n - nie): ");
		is_on = onoff();
	}
	changeSettings(settings, BOLD, is_on<<=29);
}
void setItalic(unsigned int *settings) {
	int is_on = UNDEF;

	while(is_on == UNDEF) {
		while(getchar() != '\n')
			continue;
		printf("Kursywa (t - tak, n - nie): ");
		is_on = onoff();
	}
	changeSettings(settings, ITALIC, is_on<<=30);
}
void setUnderline(unsigned int *settings) {
	int is_on = UNDEF;

	while(is_on == UNDEF) {
		while(getchar() != '\n')
			continue;
		printf("Podkreslenie (t - tak, n - nie): ");
		is_on = onoff();
	}
	changeSettings(settings, UNDERLINE, is_on<<=31);
}
void changeSettings(unsigned int *settings, int MASK, int val) {
	*settings &= ~MASK;
	*settings |= val;
}
int onoff(void) {
	char tn;
	int is_on = UNDEF;

	scanf("%c", &tn);
	switch(tn) {
		case 't' : is_on = ON; break;
		case 'n' : is_on = OFF; break;
		default : is_on = UNDEF;

	}
	return is_on;
}
